// JavaScript 弱类型产生的问题
//因为弱类型的关系，程序当中的类型异常需要等到运行时才能够发现
const obj ={}

obj.foo()//obj.foo is not a function  运行时才报错

setTimeout(() =>{
    obj.foo()//在刚刚启动运行时还没发现异常，等到这行代码执行了才抛出这个异常，如果测试过程中没测到，这个就是个隐患，若是强类型，则直接报错。
},1000000)

//========================================================
//因为弱类型的关系，类型不明确就造成函数功能可能会发生改变
function sum(a,b){
    return a+b
}

console.log(sum(100,100)) //200
console.log(sum(100,'100'))//100100 直接拼接了，若是强类型，语法上行不通

//======================================================================
// 因为弱类型的关系，引起我们对对象索引器错误的用法
const obj = {}

obj[true] = 100

console.log(obj['true']) // 100 如果说我们不知道对象属性名会自动转换成字符串的特点，那这里可能就会感觉很奇怪，这种奇怪的根源就是我们用的是比较随意的弱类型语言，强类型则直接报错

// 君子约定有隐患，强制要求有保障

